/*
因为本身用户服务器已经管理了用户个人信息，因此没必要再整一份用户信息出
来，也因为当前用户之间只有好友关系（目前未实现：黑名单，陌生人....），因此
这里是一个好友关系表，表示谁和谁是好友
包含字段：
• ID：作为主键
• 用户 ID：
• 好友 ID：
需要注意的是两个用户结为好友时，需要添加 (1,2),(2,1) 两条数据
*/

#pragma once
#include <string>
#include <cstddef> 
#include <odb/nullable.hxx>
#include <odb/core.hxx>

namespace zrb 
{
    #pragma db object table("relation")
    class Relation
    {
    public:
        Relation()
        {}

        Relation(const std::string& uid,const std::string& pid)
            :_user_id(uid)
            ,_peer_id(pid)
        {}

        std::string user_id()
        {
            return _user_id;
        }
        void user_id(const std::string& val)
        {
            _user_id = val;
        }

        std::string peer_id()
        {
            return _peer_id;
        }
        void peer_id(const std::string& val)
        {
            _peer_id = val;
        }

    private:
        friend class odb::access;
        #pragma db id auto //主键自增
        unsigned long _id;
        #pragma db type("varchar(64)") index   //为用户id建立索引 
        std::string _user_id; //用户id
        #pragma db type("varchar(64)") index
        std::string _peer_id;
    };
}

// odb -d mysql --generate-query --generate-schema --profile boost/date-time relation.hxx
